Pressidian
花园入口
笔记
项目
关于
实验室
GitHub
花园入口
笔记
项目
关于
实验室
GitHub

KNOWLEDGE PATHS

笔记库
当前位置
笔记库/前端/三件套/JS/廖雪峰教程/7浏览器/7.1DOM

7.1.4 删除DOM

1 分钟阅读 · Note

目录树 578 篇

                • 7.1.1 浏览器对象
                • 7.1.2 操作DOM
                • 7.1.3 插入DOM
                • 7.1.4 删除DOM
              • 7.2 表单
              • 7.3 文件
              • 7.4 AJAX
              • 7.5 Promise
              • 7.6 async
              • 7.7 Canvas
          • 前端模块化
      • 前端技术栈
    • 笔记目录
    • CLAUDE.md
    • Vue 组件与 Render 函数

关联笔记 6

↗7.1.1 浏览器对象同一路径↗7.1.2 操作DOM同一路径↗7.1.3 插入DOM同一路径↗7.2 表单共同主题↗7.3 文件共同主题↗7.4 AJAX共同主题
  • 7.1.4 删除DOM

7.1.4 删除DOM

删除一个DOM节点就比插入要容易得多。

要删除一个节点,首先要获得该节点本身以及它的父节点,然后,调用父节点的removeChild把自己删掉:

// 拿到待删除节点:
let self = document.getElementById('to-be-removed');
// 拿到父节点:
let parent = self.parentElement;
// 删除:
let removed = parent.removeChild(self);
removed === self; // true

注意到删除后的节点虽然不在文档树中了,但其实它还在内存中,可以随时再次被添加到别的位置。

当你遍历一个父节点的子节点并进行删除操作时,要注意,children属性是一个只读属性,并且它在子节点变化时会实时更新。

例如,对于如下HTML结构:

<div id="parent">
    <p>First</p>
    <p>Second</p>
</div>

当我们用如下代码删除子节点时:

let parent = document.getElementById('parent');
parent.removeChild(parent.children[0]);
parent.removeChild(parent.children[1]); // <-- 浏览器报错

浏览器报错:parent.children[1]不是一个有效的节点。原因就在于,当&lt;p&gt;First&lt;/p&gt;节点被删除后,parent.children的节点数量已经从2变为了1,索引[1]已经不存在了。

因此,删除多个节点时,要注意children属性时刻都在变化。